﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Intelsi.Entity;
using Microsoft.Practices.Unity;
using Intelsi.BusinessLogic;
namespace Intelsi.WB
{
    public partial class FrmProveedor : System.Web.UI.Page
    {
        [Dependency]
        public  IBancoBL bancoBL { get; set; }


        [Dependency]
        public IProveedorBL proveedorBL { get; set; }

        public ProveedorDTO CurrenProveedor { get; set; }

        [Dependency]
        public IUbigeoBL ubigeoBL { get; set; }

        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }


        private const string VARPROVEEDOR = "proveedor";
        private const string VARBANCO = "banco";



        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string userName = HttpContext.Current.User.Identity.Name;
                var trabajador = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);

                string cargo = trabajador.Cargo;

                var acc = Request.QueryString["acc"];

                if (acc != string.Empty)
                {
                    btnGuardar.Text = "Guardar";

                    if (acc == "nuevo" && (cargo == "Almacenero" || cargo == "Gerente"))
                    {

                        AccionHiddenField.Value = acc;
                        IdHiddenField.Value = "0";

                       

                        var proveedor = new ProveedorDTO();
                        BindProveedor(proveedor);


                    }

                    else if (acc == "editar" && (cargo == "Almacenero" || cargo == "Gerente"))
                    {
                        btnGuardar.Text = "Guardar Cambios";

                        AccionHiddenField.Value = acc;
                        var IdProveedor = Int32.Parse(Request.QueryString["IdProveedor"]);
                        var proveedor = proveedorBL.GetAllFromProveedorById(IdProveedor);
                        BindProveedorActualizar(proveedor);




                    }

                    else
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(),
                               "mensaje",
                                  "<script type=\"text/javascript\">" +
                                     "alert(\"Usted No tiene Los Permiso Nesesarios Para esto\");" +
                                     "document.location=('Default.aspx');" +
                                       "</script>", false);
                    }
                }

            }

            if (RblPago.SelectedValue == "1")
            {

                txtLineaCredito.Enabled = false;
                DowTipoPago.Enabled = false;

            }
            else
            {
                txtLineaCredito.Enabled = true;
                DowTipoPago.Enabled = true;

            }


            if (DowPais.SelectedValue == "Peru")
            {

                txtDepa.Enabled = false;
                txtProvincia.Enabled = false;
                txtDistrito.Enabled = true;

            }
            else
            {
                txtDepa.Enabled = false;
                txtProvincia.Enabled = false;
                txtDistrito.Enabled = false;
                txtProvincia.Text = "Ninguno";
                txtDepa.Text = "Ninguno";
                txtDistrito.Text = "Ninguno";
                

            }
          

        }

        protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = bancoBL;
        }

        //------------------------------------------------------


        protected void btnGuardar_Click(object sender, EventArgs e)
        {

            var proveedor = Cache.Get(VARPROVEEDOR) as ProveedorDTO;


            BindProveedor(proveedor);

            
            if (AccionHiddenField.Value == "editar")
            {

                proveedorBL.AddProveedor(proveedor);
                //Response.Redirect("frmListarProveedor.aspx");

                Page.ClientScript.RegisterStartupScript(this.GetType(),
                             "mensaje",
                                "<script type=\"text/javascript\">" +
                                   "alert(\"Se ha Actualizado  Exitosamente\");" +
                                   "document.location=('frmListarProveedor.aspx');" +
                                     "</script>",false);
                
  


            }
            else if (AccionHiddenField.Value == "nuevo")
            {
                proveedorBL.AddProveedor(proveedor);
                //Response.Redirect("frmListarProveedor.aspx");
               

                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                         "mensaje",
                            "<script type=\"text/javascript\">" +
                               "alert(\"Se ha Registado Exitosamente\");" +
                                "document.location=('frmListarProveedor.aspx');" +
                                 "</script>", false);

              
            }
        }

         //------------------------------------------------------

        private void BindProveedor(ProveedorDTO proveedor)
        {
               
                proveedor.IdProvedor = Int32.Parse(IdHiddenField.Value);
                proveedor.IdUbigeo = HFUbigeo.Value != "" ? Int32.Parse(HFUbigeo.Value):10000;
                proveedor.Ruc = txtRuc.Text;
                proveedor.RazonSocial = txtEmpresa.Text;
                proveedor.Email = txtEmail.Text;
                proveedor.TelefonoEmpr = txtTelefono.Text;
                proveedor.Direccion = txtDireccion.Text;
                proveedor.NombreContacto = txtNombre.Text;
                proveedor.DNIContacto = TxtDNI.Text;
                proveedor.TelefonoCont = txtCel1.Text;
                proveedor.TelefonoContII = txtCel2.Text;
               
               GridProveedor.DataSource = proveedor.DetalleProvedor;
               GridProveedor.DataBind();

               Cache.Insert(VARPROVEEDOR, proveedor);

        }

        //------------------------------------------------------

        private void BindProveedorActualizar(ProveedorDTO proveedor)
        {
            IdHiddenField.Value = proveedor.IdProvedor.ToString();
            HFUbigeo.Value = proveedor.IdUbigeo.ToString();
            txtDistrito.Text = proveedor.Distrito;
            txtProvincia.Text = proveedor.Provincia;
            txtDepa.Text = proveedor.Departamento;

            if (proveedor.Distrito == "Ninguno")
            {
                DowPais.SelectedValue = "Otro";
            }

            txtRuc.Text = proveedor.Ruc;
           // DropDownList3.DataTextField = proveedor.IdUbigeo.ToString();
           // DropDownList1.DataTextField = proveedor.Departamento;
           // DropDownList2.DataTextField = proveedor.Provincia;
           //// DropDownList3.SelectedValue = proveedor.IdUbigeo.ToString();

            txtEmpresa.Text = proveedor.RazonSocial;
            txtEmail.Text = proveedor.Email ;
            txtTelefono.Text = proveedor.TelefonoEmpr;
            txtDireccion.Text = proveedor.Direccion;
            txtNombre.Text = proveedor.NombreContacto;
            TxtDNI.Text = proveedor.DNIContacto;
            txtCel1.Text = proveedor.TelefonoCont;
            txtCel2.Text = proveedor.TelefonoContII;


            GridProveedor.DataSource = proveedor.DetalleProvedor;
            GridProveedor.DataBind();

            Cache.Insert(VARPROVEEDOR, proveedor);


        }

        protected void Nuevo_Click(object sender, EventArgs e)
        {
            Response.Redirect("FrmProveedor.aspx?acc=nuevo");
        }

        
        protected void BtnAgregarBanco_Click(object sender, EventArgs e)
        {
                                   
            var proveedor = Cache.Get(VARPROVEEDOR) as ProveedorDTO;

            if (RblPago.SelectedValue == "1")
            {
                var detalle = new DetalleProveedorDTO()
                {

                    IdProveedor = proveedor.IdProvedor,
                    IdBanco = int.Parse(HFBanco.Value),
                    Nombre = txtBancoBuscar.Text,
                    NumeroCuenta = txtCuenta.Text,
                    TipodeCuenta = RblPago.SelectedValue,
                    

                };

                txtLineaCredito.Enabled = false;
                DowTipoPago.Enabled = false;
                proveedor.DetalleProvedor.Add(detalle);
                GridProveedor.DataSource = proveedor.DetalleProvedor;
                GridProveedor.DataBind();
                Cache.Insert(VARPROVEEDOR, proveedor);
            }
            else
            {

                var detalle = new DetalleProveedorDTO()
                {

                    IdProveedor = proveedor.IdProvedor,
                    IdBanco = int.Parse(HFBanco.Value),
                    Nombre = txtBancoBuscar.Text,
                    NumeroCuenta = txtCuenta.Text,
                    TipodeCuenta = RblPago.SelectedValue,
                    LineaCredito = decimal.Parse(txtLineaCredito.Text),
                    TipoPago = DowTipoPago.SelectedValue,


                };

                proveedor.DetalleProvedor.Add(detalle);
                GridProveedor.DataSource = proveedor.DetalleProvedor;
                GridProveedor.DataBind();
                Cache.Insert(VARPROVEEDOR, proveedor);
            }

            txtCuenta.Text = "";
            txtLineaCredito.Text = "";                 
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("frmListarProveedor.aspx");
        }

        protected void ObjectDataSource2_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = ubigeoBL;
        }

        protected void ObjectDataSource3_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = ubigeoBL;
        }

      

        protected void ObjectDataSource4_ObjectCreating1(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = ubigeoBL;
        }

        protected void ObjectDataSource5_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = ubigeoBL;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Banco banco = new Banco();
            BindBanco(banco);
            bancoBL.AddBanco(banco);
            Banco_MPE.Hide();
              
        }

        private void BindBanco (Banco banco)
        {
                       
                banco.IdBanco = 0;
                banco.Nombre = txtBanco.Text;
                banco.Tipo = bool.Parse(DowTipo.SelectedValue);

           
        }

        protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {
            BancoProvedor detalleProv = new BancoProvedor();

            
            txtCuenta.Text = detalleProv.NumeroCuenta;

           

        }

      

                    
    }
}